package com.icinfo.cloud.provider.punish.common.publicsecurityentrust.service;


import com.icinfo.cloud.common.core.page.PageResponse;
import com.icinfo.cloud.provider.common.service.PunishBaseService;
import com.icinfo.cloud.provider.punish.common.publicsecurityentrust.dto.PublicSecurityDocumentNumberPageDTO;
import com.icinfo.cloud.provider.punish.common.publicsecurityentrust.dto.PublicSecurityDocumentNumberReqDTO;
import com.icinfo.cloud.provider.punish.common.publicsecurityentrust.dto.PublicSecurityDocumentNumberRollbackDTO;
import com.icinfo.cloud.provider.punish.common.publicsecurityentrust.dto.PublicSecurityDocumentNumberVerifyDTO;
import com.icinfo.cloud.provider.punish.common.publicsecurityentrust.vo.PublicSecurityDocumentNumberDetailsVo;
import com.icinfo.cloud.provider.punish.common.publicsecurityentrust.vo.PublicSecurityDocumentNumberVO;


/**
 * 公安委托文号相关配置信息操作Service
* @author HKxxx
* @description 针对表【case_public_security_entrust_document_number(公安委托执法-文书号段信息)】的数据库操作Service
* @createDate 2024-1-2 10:01:27
*/
public interface ICasePublicSecurityEntrustDocumentNumberService extends PunishBaseService {


    /**
     * 新增或编辑
     * @param reqDTO
     */
    String save(PublicSecurityDocumentNumberReqDTO reqDTO);

    /**
     * 删除（逻辑删除）
     * @param id
     */
    void deleteById(String id);


    /**
     * 分页列表
     * @param queryDTO
     * @return
     */
    PageResponse<PublicSecurityDocumentNumberVO> pageList(PublicSecurityDocumentNumberPageDTO queryDTO);


    /**
     * 获取公安委托文号
     * @param orgCode
     * @return
     */
    String getPublicSecurityDocumentNumber(String orgCode);


    /**
     * 获取是否存在余号
     */
    Boolean hasRemainNumber(String orgCode);

    /**
     * 文号回归
     */
    void publicSecurityRollbackDocumentNumber(PublicSecurityDocumentNumberRollbackDTO queryDTO);

    /**
     * 剩余文号警告
     */
    void residualNumberWarning(PublicSecurityDocumentNumberRollbackDTO queryDTO);

    /**
     * 校验文号合理性
     *
     * @param reqDTO
     */
    void verifyMainDocumentNumber(PublicSecurityDocumentNumberVerifyDTO reqDTO);

    /**
     * 根据大号段id 查询街道号段详情
     */
    PublicSecurityDocumentNumberDetailsVo details(String id);

    /**
     * 根据当前登录用户查询当前的执法编码
     *
     * @return
     */
    String getEnforcementCodeByCurrentUser();
}
